#ifndef THREAD7_H
#define THREAD7_H

#include <stdint.h>
#include <pthread.h>
#include "log_utils.h"

// RS232串口设备定义
#define MOTOR_RS232_DEVICE "/dev/ttyS7"  // RS232-3，对应外部连接器的COM3口
#define MOTOR_RS232_BAUDRATE B9600        // 波特率9600 8-N-1
#define MOTOR_RS232_TIMEOUT_SEC 1        // 接收超时时间（秒）
#define MOTOR_RS232_TIMEOUT_USEC 0       // 接收超时时间（微秒）

// 电机通信缓冲区大小定义
#define MOTOR_RX_BUFFER_SIZE 1024  // 接收缓冲区大小
#define MOTOR_TX_BUFFER_SIZE 1024  // 发送缓冲区大小

// 线程7函数声明
void *thread7_function(void *arg);

// 电机串口初始化函数
int motor_rs232_init(const char *device, int baudrate);

// 向电机发送指令函数
// 参数: fd - 串口文件描述符
//       buffer - 发送缓冲区
//       length - 要发送的数据长度
int motor_send_command(int fd, const uint8_t *buffer, int length);

// 接收电机应答函数
// 参数: fd - 串口文件描述符
//       buffer - 接收缓冲区
//       buffer_size - 接收缓冲区大小
//       timeout_sec - 超时秒数
//       timeout_usec - 超时微秒数
int motor_receive_response(int fd, uint8_t *buffer, int buffer_size, int timeout_sec, int timeout_usec);

// 电机数据处理函数
// 参数: rx_buffer - 接收缓冲区
//       rx_length - 接收数据长度
//       tx_buffer - 发送缓冲区
//       tx_length - 指向发送数据长度的指针，函数会更新此值
void motor_process_data(const uint8_t *rx_buffer, int rx_length, uint8_t *tx_buffer, int *tx_length);

// 串口关闭函数
void motor_rs232_close(int fd);
 
#endif /* THREAD7_H */ 